package cn.sunjinxin.trade.client.api;

import cn.sunjinxin.savior.core.common.Result;
import cn.sunjinxin.trade.client.api.request.*;
import cn.sunjinxin.trade.client.api.response.*;

/**
 * @author issavior
 */
public interface TradeService {

    /**
     * 预下单
     * <pre>
     *     用于提前验单，提升下单成功率
     *     只有B2C、B2B订单支持预下单
     * </pre>
     *
     * @param request \
     * @return 验单结果
     */
    Result<OrderDTO> orderValidate(OrderRequest request);

    /**
     * 创单
     *
     * @param request \
     * @return 创单结果
     */
    Result<OrderCreateDTO> orderCreate(OrderRequest request);

    /**
     * 支付
     *
     * @param orderPayRequest \
     * @return 支付
     */
    Result<String> pay(OrderPayRequest orderPayRequest);

    /**
     * 支付成功
     *
     * @param orderPaySuccessRequest \
     * @return 支付成功
     */
    Result<String> paySuccess(OrderPaySuccessRequest orderPaySuccessRequest);


}
